using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Airports._ObstructionIdentificationSurfaces
{
    /// <summary>
    /// <para>ICAO Annex 14</para>
    /// <para>Creates obstruction identification surfaces (OIS) based on ICAO Annex 14 specifications. These surfaces define the airspace around aerodromes to be free of obstacles so flight operations can be performed safely. This tool creates surfaces as a polygon or multipatch features.</para>
    /// <para>根据国际民航组织附件14规范创建障碍物识别表面（OIS）。这些表面定义了机场周围的空域，使其没有障碍物，因此可以安全地进行飞行操作。此工具可将曲面创建为面或多面体要素。</para>
    /// </summary>    
    [DisplayName("ICAO Annex 14")]
    public class ICAOAnnex14 : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ICAOAnnex14()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// </param>
        /// <param name="_target">
        /// <para>Target OIS Features</para>
        /// <para>The output feature class that will contain the generated obstruction identification surfaces.</para>
        /// <para>将包含生成的障碍物识别表面的输出要素类。</para>
        /// </param>
        /// <param name="_runway_type">
        /// <para>Runway Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the runway classification of the Input Runway Features parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_1—A runway intended for the operation of aircraft using visual approach procedures. Runway strip length is 30 meters.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_2—A runway with a 60-meter strip length and 40-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_3—A runway with a 60-meter strip length and 75-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_4—A runway with a 60-meter strip length and 75-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_1—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_2—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_3 —An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_4—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1—An instrument runway served by an Instrument Landing System (ILS) or a Microwave Landing System (MLS) and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height lower than 60 meters (200 feet) but not lower than 30 meters (100 feet) and a runway visual range not less than 350 meters. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入跑道要素参数的跑道分类。</para>
        ///   <bulletList>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_1 - 用于使用目视进近程序操作飞机的跑道。跑道条长度为30米。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_2 - 跑道长度为 60 米，跑道宽度为 40 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_3 - 跑道长度为 60 米，带宽度为 75 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_4 - 跑道长度为 60 米，带宽度为 75 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_1 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_2 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入式进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_3 —由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_4 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1 - 由仪表着陆系统 （ILS） 或微波着陆系统 （MLS） 和视觉辅助设备提供服务的仪表跑道，用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度低于 60 米（200 英尺）但不低于 30 米（100 英尺）且跑道视距不小于 350 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public ICAOAnnex14(object _in_features, object _target, _runway_type_value? _runway_type)
        {
            this._in_features = _in_features;
            this._target = _target;
            this._runway_type = _runway_type;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "ICAO Annex 14";

        public override string CallName => "aviation.ICAOAnnex14";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_features, _target, _runway_type.GetGPValue(), _highend_clear_way_length, _lowend_clear_way_length, _airport_elevation, _runway_direction.GetGPValue(), _include_merged_surface.GetGPValue(), _derived_outfeatureclass, _custom_json_file, _airport_control_point_feature_class];

        /// <summary>
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Runway Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>Target OIS Features</para>
        /// <para>The output feature class that will contain the generated obstruction identification surfaces.</para>
        /// <para>将包含生成的障碍物识别表面的输出要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target { get; set; }


        /// <summary>
        /// <para>Runway Classification</para>
        /// <para><xdoc>
        ///   <para>Specifies the runway classification of the Input Runway Features parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_1—A runway intended for the operation of aircraft using visual approach procedures. Runway strip length is 30 meters.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_2—A runway with a 60-meter strip length and 40-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_3—A runway with a 60-meter strip length and 75-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_4—A runway with a 60-meter strip length and 75-meter strip width that is intended for the operation of aircraft using visual approach procedures.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_1—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_2—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_3 —An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_4—An instrument runway served by visual aids and a nonvisual aid providing at least directional guidance adequate for a straight-in approach. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1—An instrument runway served by an Instrument Landing System (ILS) or a Microwave Landing System (MLS) and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 75-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height not lower than 60 meters (200 feet) and either a visibility not less than 800 meters or a runway visual range not less than 550 meters. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4—An instrument runway served by ILS and MLS and visual aids intended for operations with a decision height lower than 60 meters (200 feet) but not lower than 30 meters (100 feet) and a runway visual range not less than 350 meters. This runway type has a 60-meter strip length and a 150-meter strip width on either side of the runway centerline.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入跑道要素参数的跑道分类。</para>
        ///   <bulletList>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_1 - 用于使用目视进近程序操作飞机的跑道。跑道条长度为30米。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_2 - 跑道长度为 60 米，跑道宽度为 40 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_3 - 跑道长度为 60 米，带宽度为 75 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_INSTRUMENT_CODE_NUMBER_4 - 跑道长度为 60 米，带宽度为 75 米的跑道，用于使用目视进近程序操作飞机。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_1 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_2 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入式进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_3 —由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>NON_PRECISION_APPROACH_CODE_NUMBER_4 - 由视觉辅助工具和非视觉辅助工具提供服务的仪表跑道，至少提供足以直入进近的方向引导。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1 - 由仪表着陆系统 （ILS） 或微波着陆系统 （MLS） 和视觉辅助设备提供服务的仪表跑道，用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 75 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度不低于 60 米（200 英尺）且能见度不低于 800 米或跑道视距不小于 550 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///     <bullet_item>PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4 - 由 ILS 和 MLS 提供服务的仪表跑道以及用于决策高度低于 60 米（200 英尺）但不低于 30 米（100 英尺）且跑道视距不小于 350 米的操作的视觉辅助设备。这种跑道类型在跑道中心线两侧的带长为 60 米，带宽为 150 米。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Runway Classification")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _runway_type_value? _runway_type { get; set; }

        public enum _runway_type_value
        {
            /// <summary>
            /// <para>Non instrument code number 1</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non instrument code number 1")]
            [GPEnumValue("NON_INSTRUMENT_CODE_NUMBER_1")]
            _NON_INSTRUMENT_CODE_NUMBER_1,

            /// <summary>
            /// <para>Non instrument code number 2</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non instrument code number 2")]
            [GPEnumValue("NON_INSTRUMENT_CODE_NUMBER_2")]
            _NON_INSTRUMENT_CODE_NUMBER_2,

            /// <summary>
            /// <para>Non instrument code number 3</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non instrument code number 3")]
            [GPEnumValue("NON_INSTRUMENT_CODE_NUMBER_3")]
            _NON_INSTRUMENT_CODE_NUMBER_3,

            /// <summary>
            /// <para>Non instrument code number 4</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non instrument code number 4")]
            [GPEnumValue("NON_INSTRUMENT_CODE_NUMBER_4")]
            _NON_INSTRUMENT_CODE_NUMBER_4,

            /// <summary>
            /// <para>Non precision approach code number 1</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non precision approach code number 1")]
            [GPEnumValue("NON_PRECISION_APPROACH_CODE_NUMBER_1")]
            _NON_PRECISION_APPROACH_CODE_NUMBER_1,

            /// <summary>
            /// <para>Non precision approach code number 2</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non precision approach code number 2")]
            [GPEnumValue("NON_PRECISION_APPROACH_CODE_NUMBER_2")]
            _NON_PRECISION_APPROACH_CODE_NUMBER_2,

            /// <summary>
            /// <para>Non precision approach code number 3</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non precision approach code number 3")]
            [GPEnumValue("NON_PRECISION_APPROACH_CODE_NUMBER_3")]
            _NON_PRECISION_APPROACH_CODE_NUMBER_3,

            /// <summary>
            /// <para>Non precision approach code number 4</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Non precision approach code number 4")]
            [GPEnumValue("NON_PRECISION_APPROACH_CODE_NUMBER_4")]
            _NON_PRECISION_APPROACH_CODE_NUMBER_4,

            /// <summary>
            /// <para>Precision approach category I code number 1</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Precision approach category I code number 1")]
            [GPEnumValue("PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1")]
            _PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_1,

            /// <summary>
            /// <para>Precision approach category I code number 2</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Precision approach category I code number 2")]
            [GPEnumValue("PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2")]
            _PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_2,

            /// <summary>
            /// <para>Precision approach category I code number 3 4</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Precision approach category I code number 3 4")]
            [GPEnumValue("PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4")]
            _PRECISION_APPROACH_CATEGORY_I_CODE_NUMBER_3_4,

            /// <summary>
            /// <para>Precision approach category II III code number 3 4</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Precision approach category II III code number 3 4")]
            [GPEnumValue("PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4")]
            _PRECISION_APPROACH_CATEGORY_II_III_CODE_NUMBER_3_4,

        }

        /// <summary>
        /// <para>Length of High Runway End Clearway</para>
        /// <para>The length of the area at the high end of the runway. The unit of measurement is based on the input runway features.</para>
        /// <para>跑道高端区域的长度。测量单位基于输入跑道特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Length of High Runway End Clearway")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _highend_clear_way_length { get; set; } = 0;


        /// <summary>
        /// <para>Length of Low Runway End Clearway</para>
        /// <para>The length of the area at the low end of the runway. The unit of measurement is based on the input runway features.</para>
        /// <para>跑道低端区域的长度。测量单位基于输入跑道特征。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Length of Low Runway End Clearway")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _lowend_clear_way_length { get; set; } = 0;


        /// <summary>
        /// <para>Airport Elevation</para>
        /// <para>The highest elevation on any of the runways of the airport. The value must be in the vertical coordinate system linear units of the target feature class. If no value is given, the highest point in the Input Runway Features dataset will be used.</para>
        /// <para>机场任何跑道上的最高海拔。该值必须采用目标要素类的垂直坐标系线性单位。如果未给出任何值，则将使用输入跑道要素数据集中的最高点。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Airport Elevation")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _airport_elevation { get; set; } = 0;


        /// <summary>
        /// <para>Runway Direction</para>
        /// <para><xdoc>
        ///   <para>Specifies at which end of the runway the approach surface will be created.</para>
        ///   <bulletList>
        ///     <bullet_item>High end to low end—The approach surface will be created at the high end of the runway to the low end. If a displaced threshold point exists at the high end of the runway, that point will be honored when creating the OIS.</bullet_item><para/>
        ///     <bullet_item>Low end to high end—The approach surface will be created at the low end of the runway to the high end. If a displaced threshold point exists at the low end of the runway, that point will be honored when creating the OIS.</bullet_item><para/>
        ///     <bullet_item>Both ends—The approach surface will be created at both the low end and high end of the runway.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将在跑道的哪一端创建进近面。</para>
        ///   <bulletList>
        ///     <bullet_item>从高端到低端 - 进近曲面将在跑道的高端到低端创建。如果跑道的高端存在位移阈值点，则在创建 OIS 时将遵循该点。</bullet_item><para/>
        ///     <bullet_item>从低端到高端 - 进近曲面将在跑道的低端创建到高端。如果跑道的低端存在位移阈值点，则在创建 OIS 时将遵循该点。</bullet_item><para/>
        ///     <bullet_item>两端 - 进近面将在跑道的低端和高端创建。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Runway Direction")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _runway_direction_value _runway_direction { get; set; } = _runway_direction_value._HIGH_END_TO_LOW_END;

        public enum _runway_direction_value
        {
            /// <summary>
            /// <para>High end to low end</para>
            /// <para>High end to low end—The approach surface will be created at the high end of the runway to the low end. If a displaced threshold point exists at the high end of the runway, that point will be honored when creating the OIS.</para>
            /// <para>从高端到低端 - 进近曲面将在跑道的高端到低端创建。如果跑道的高端存在位移阈值点，则在创建 OIS 时将遵循该点。</para>
            /// </summary>
            [Description("High end to low end")]
            [GPEnumValue("HIGH_END_TO_LOW_END")]
            _HIGH_END_TO_LOW_END,

            /// <summary>
            /// <para>Low end to high end</para>
            /// <para>Low end to high end—The approach surface will be created at the low end of the runway to the high end. If a displaced threshold point exists at the low end of the runway, that point will be honored when creating the OIS.</para>
            /// <para>从低端到高端 - 进近曲面将在跑道的低端创建到高端。如果跑道的低端存在位移阈值点，则在创建 OIS 时将遵循该点。</para>
            /// </summary>
            [Description("Low end to high end")]
            [GPEnumValue("LOW_END_TO_HIGH_END")]
            _LOW_END_TO_HIGH_END,

            /// <summary>
            /// <para>Both ends</para>
            /// <para>Both ends—The approach surface will be created at both the low end and high end of the runway.</para>
            /// <para>两端 - 进近面将在跑道的低端和高端创建。</para>
            /// </summary>
            [Description("Both ends")]
            [GPEnumValue("BOTH_END")]
            _BOTH_END,

        }

        /// <summary>
        /// <para>Include Merged Surfaces</para>
        /// <para><xdoc>
        ///   <para>Specifies whether merged surfaces will be generated.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—All the surfaces will be generated for the merged surfaces, as well as merged conical and horizontal surfaces. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Surfaces will not be generated for the merged surfaces.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否生成合并曲面。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将为合并曲面以及合并的圆锥曲面和水平曲面生成所有曲面。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不会为合并曲面生成曲面。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Merged Surfaces")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_merged_surface_value _include_merged_surface { get; set; } = _include_merged_surface_value._true;

        public enum _include_merged_surface_value
        {
            /// <summary>
            /// <para>INCLUDE_MERGED_SURFACE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_MERGED_SURFACE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_INCLUDE_MERGED_SURFACE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_INCLUDE_MERGED_SURFACE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output OIS Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _derived_outfeatureclass { get; set; }


        /// <summary>
        /// <para>Custom JSON File</para>
        /// <para>The import configuration, in JSON format, that creates the custom OIS.</para>
        /// <para>用于创建自定义 OIS 的 JSON 格式的导入配置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Custom JSON File")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _custom_json_file { get; set; } = null;


        /// <summary>
        /// <para>Input Airport Control Point Feature</para>
        /// <para>The point features containing an Airport Elevation feature, displaced threshold features, or both. Values provided for the Airport Elevation parameter will take precedence over these point features.</para>
        /// <para>包含机场高程要素和/或位移阈值要素的点要素。为机场高程参数提供的值将优先于这些点要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Airport Control Point Feature")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _airport_control_point_feature_class { get; set; } = null;


        public ICAOAnnex14 SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}